package com.ev.scm.dao;


import com.ev.scm.domain.DeliveryNoteDO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;

/**
   * Description 发货通知MAPPER
   * Company Xin Soft
   * @author Liu Yu
   * Date 2020/12/31
  **/
@Component
public interface DeliveryNoteDao {

     /**
      * 根据前缀查询最大单据编号
      * @param prefix 单据前缀
      * @return 单据编号
      * @throws Exception 异常
      */
     String findMaxCode(@Param("prefix") String prefix) throws Exception;

     /**
      * 保存发货通知主表数据
      * @param saveBean bean
      * @return 成功数量
      * @throws Exception 异常
      */
     int saveDeliveryNote(DeliveryNoteDO saveBean) throws Exception;

     /**
      * 审核/反审核发货通知
      * @param id id
      * @param auditSign 标志
      * @param userId 审核人员id
      * @throws Exception 异常
      */
     void auditOrReverseAudit(@Param("id") Long id,@Param("auditSign")Long auditSign,@Param("userId")Long userId) throws Exception;

     /**
      * 根据id查询发货通知信息
      * @param id id
      * @return 发货通知
      */
     DeliveryNoteDO findDeliveryNoteById(Long id) throws Exception;

      /**
       * 批量删除发货通知主表记录
       * @param ids 主表id
       * @throws Exception 异常
       */
     void deleteByIds(List<Long> ids) throws Exception;

     /**
      * 根据id集合查询已审核发货通知列表
      * @param ids 发货通知主表id集合
      * @return 已审核的数据id集合
      */
     List<Long> findAuditDeliveryNoteByIds(List<Long> ids);
}
